//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#ifndef MANIPULATEMATRIX_H
#define	MANIPULATEMATRIX_H
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#include "libraries.h"
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
class ManipulateMatrix {
    
  private:

    String*           filenameMatrix;
    String*           filenameList;
    String*           filenameOut;

    double**          matrixValues;
    TListE <String>*  matrixLabels;
    TListE <String>*  listOrdered;
    
  protected:

    bool SplitColumn(char*, TListE <String>*, const char*);
    bool SplitColumnValues(char*, double*, const char*);

  public:

    ManipulateMatrix();
    ManipulateMatrix(const ManipulateMatrix&);
    ManipulateMatrix(const ManipulateMatrix*);

    ~ManipulateMatrix();

    void                FilenameMatrix(String*);
    void                FilenameList(String*);
    void                FilenameOut(String*);

    void                MatrixValues(double**);
    void                MatrixLabels(TListE <String>*);
    void                ListOrdered(TListE <String>*);

    String*             FilenameMatrix(void);
    String*             FilenameList(void);
    String*             FilenameOut(void);

    double**            MatrixValues(void);
    TListE <String>*    MatrixLabels(void);
    TListE <String>*    ListOrdered(void);

    bool                LoadData(void);
    bool                OrderMatrixByList(void);
    bool                WriteResultedMatrix(void);
    bool                WriteOriginalMatrix(void);

};
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#endif
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
